<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Chameleon-Mini: Getting Started</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Chameleon-Mini
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="index.html">index</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">Getting Started </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Finally, you hold your brand-new ChameleonMini RevG in your hands! What to do now?! In the factory, a test firmware including a USB bootloader has been programmed into the microcontroller of the Chameleon. This page describes the next steps in order to upload the current firmware, as developed in this project, via the USB bootloader. After having done that, you may want to have a look at the <a class="el" href="_page__command_line.html">The Chameleon Command Structure</a> page or explore the <a href="https://play.google.com/store/apps/details?id=com.maxieds.chameleonminilivedebugger">Chameleon Android App</a>, which is an external contribution to this project. Development and maintenance can be found <a href="https://github.com/maxieds/ChameleonMiniLiveDebugger">here</a> (please also ask questions regarding the app there).</p>
<h1>Step 1: Trigger the USB Bootloader </h1>
<p>The bootloader can be executed in two different ways:</p><ol type="1">
<li>Make sure the Chameleon is switched off (power switch on the side is in the position <code>OFF</code>). Now, hold down the right button (RBUTTON) and keep it pressed while connecting the Chameleon to a PC via a USB cable.</li>
<li>OR: Plug your Chameleon via USB to a PC and use your favorite terminal application to connect with the test firmware of the ChameleonMini. Type <code>upgrade</code> and hit Enter.</li>
</ol>
<p>In either way, the ChameleonMini now jumps to the bootloader and waits patiently for a firmware upgrade.</p>
<h1>Step 2: Upgrade the Firmware </h1>
<p>Once the ChameleonMini is in the bootloader, you can flash a new firmware, i.e., the files <a href="https://cdn.rawgit.com/emsec/ChameleonMini/master/Firmware/Chameleon-Mini/Latest/Chameleon-Mini.hex">Chameleon-Mini.hex</a> and the <a href="https://cdn.rawgit.com/emsec/ChameleonMini/master/Firmware/Chameleon-Mini/Latest/Chameleon-Mini.eep">Chameleon-Mini.eep</a>, into the microcontroller. The source code directory contains these files precompiled but you can of course also compile the code yourself. Create a new folder and copy the two files into it. The following depends on your operating system:</p>
<h2>Upgrade Procedure for Linux Users</h2>
<p>In order to upgrade the firmware under Linux you first have to install <code>avrdude</code>, e.g. under Ubuntu with the command <code>sudo apt-get install avra avrdude</code>. Then change to the directory where you have saved the hex and eep files and run <code>sudo avrdude -c flip2 -p ATXMega128A4U -B 60 -P usb -U application:w:Chameleon-Mini.hex:i -U eeprom:w:Chameleon-Mini.eep:i</code>.</p>
<p>You also can use <code>sudo make program</code> in the source code directory, which basically does the same.</p>
<p>After running this command you need to restart your Chameleon, e.g. by reattaching the Chameleon to the PC.</p>
<dl class="section note"><dt>Note</dt><dd>If you are using Ubuntu 14.04, avrdude may not support flip2. In this case, you can run <code>add-apt-repository ppa:pmjdebruijn/avrdude-release</code>, then <code>apt-get update</code> and finally <code>apt-get install avrdude</code> to upgrade to a version of avrdude that supports flip2.</dd></dl>
<p>Optionally copy <a href="https://cdn.rawgit.com/emsec/ChameleonMini/master/Drivers/98-ChameleonMini.rules">Drivers/98-ChameleonMini.rules</a> to /etc/udev/rules.d/, to allow non-root users to open the chameleon serial port at /dev/chameleon. <code>sudo cp (Path to Chameleon Repo)/Drivers/98-ChameleonMini.rules /etc/udev/rules.d/</code> Remember to restart the udev daemon, or reboot to activate the rule. 'sudo udevadm control &ndash;reload'</p>
<h2>Upgrade Procedure for Mac OS Users</h2>
<p>When running <a href="https://brew.sh">Homebrew</a> you can install avrdude with <code>brew install avrdude</code>. After this, change to the directory where you have saved the hex and eep files and run <code>sudo avrdude -c flip2 -p ATXMega128A4U -B 60 -P usb -U application:w:Chameleon-Mini.hex:i -U eeprom:w:Chameleon-Mini.eep:i</code>.</p>
<h2>Upgrade Procedure for Windows Users</h2>
<p>For upgrading the firmware under Windows please</p><ol type="1">
<li>download <a href="https://sourceforge.net/projects/dfu-programmer/files/dfu-programmer/0.7.2/dfu-programmer-win-0.7.2.zip/download">https://sourceforge.net/projects/dfu-programmer/files/dfu-programmer/0.7.2/dfu-programmer-win-0.7.2.zip/download</a> and extract to an arbitrary directory. Make sure to use the DFU programmer Version 0.7.2!</li>
<li>Go to the extraction directory and then open the folder <code>dfu-prog-usb-1.2.2</code>. Install the <code>atmel_usb_dfu.inf</code> driver (right click -&gt; install).</li>
<li>Copy <code>dfu-programmer.exe</code> from the extraction directory to the directory where you have saved the hex and eep files.</li>
<li>Save the <a href="https://cdn.rawgit.com/emsec/ChameleonMini/master/Firmware/Chameleon-Mini/ChameleonFirmwareUpgrade.bat">ChameleonFirmwareUpgrade.bat</a> in the same directory as the hex and eep files.</li>
<li>Run the <code>ChameleonFirmwareUpgrade.bat</code> as Administrator (right click -&gt; run as Administrator) and wait for the firmware upgrade to terminate. Upon success, the green LED of the ChameleonMini should light up.</li>
</ol>
<p>Finally, install the driver for Chameleon: Download both <a href="https://cdn.rawgit.com/emsec/ChameleonMini/master/Drivers/ChameleonDriver.inf">ChameleonDriver.inf</a> and <a href="https://cdn.rawgit.com/emsec/ChameleonMini/master/Drivers/ChameleonDriver.cat">ChameleonDriver.cat</a> from the Drivers directory and install the INF file (right click -&gt; install). </p><dl class="section note"><dt>Note</dt><dd>If you have problems with the driver installation, try the instructions in <a href="http://www.atmel.com/images/doc8429.pdf">sections 6.2.1 and 6.2.2 from this Atmel document</a>.</dd></dl>
<p>Now, Chameleon should appear in the Windows device manager and you should be able to open a terminal program such as TeraTerm and connect to the Chameleon-Mini via the COM port shown in the device manager. On Mac or Linux you can use screen (<code>screen /dev/tty.usbmodem1421</code>, please replace your device path with the appropriate one) to communicate with your Chameleon. Further information about how to "talk" to the Chameleon can be found here: <a class="el" href="_page__command_line.html">The Chameleon Command Structure</a>. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 17 2018 21:05:32 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
